草庐IT

c++ - gcc 和 libstdc++ 向前兼容

全部标签

c++ - 如何解决此 MISRA c++ 兼容警告

intfoo(constuint8_tarray[]){intx;for(i=0;i它给出如下警告,"parameterarraycouldbedeclaredconst"==>我已经声明了数组const,我正在用C++编程。 最佳答案 首先要注意的是intfoo(constuint8_tarray[])等同于intfoo(constuint8_t*array),即函数接受一个指针到constuint8_t,而不是数组。指针本身不是const,指针对象是。签名应该是:intfoo(constuint8_t*constarray)郑重

微服务 - 旧版本和新版本之间的数据库兼容性

我正在尝试研究微服务架构,以开始为我的公司编码一些小逻辑。我知道微服务问题之一是关于数据库处理(每个微服务都必须具有分离的DBSchmema)。因此,我正在寻找要从旧的微服务版本搬出的建议或经验。所以可以说我有一个RESTAPI端点ms/v1/whatEver今天在产品上运行。一周后,我们决定与下一个版本一起上线。使我们创建一个ms/v2/whatEver在此服务中设想的实体中有一些新的列和数据类型。因此,为了不强迫所有客户立即迁移v2.如果我们同时启动和运行版本(实际上是我的主要疑问,也是本文的原因),我会想到几个方案:他们应该在同一DB实例中读/写吗v1必须调整实施以与新的架构结构匹配v2

c++ - Gcc 隐藏来自包含的静态库的符号的可见性

我有:一个共享库,比如libShared.so,它包含一个类Bar,带有一个方法intBar::do(intd)const一个静态库,比如libStatic.a,它包含一个类Foo,带有一个方法intFoo::act(inta)const。Bar的代码是这样的://Bar.hclass__attribute__((visibility("default")))Bar{private:__attribute__((visibility("hidden")))intprivateMethod(intx)const;public:Bar(){}intdo(intd)const;}//Bar.

c++ - Mac OS X 10.6.8 上的 gcc-4.2.1 中不存在 strnlen - 如何定义它?

我正在构建最新dcraw.c的跨平台OSX版本我在OSX10.6.8上执行此操作以获得PPC兼容性。现在我的问题是strnlen似乎在最新版本的程序中使用,它在10.6.8上不存在,gcc给我这样的消息:Undefinedsymbolsforarchitecturei386:"_strnlen",referencedfrom:...Undefinedsymbolsforarchitectureppc:"_strnlen",referencedfrom:...所以,我只想定义strnlen,但不太清楚如何定义。问:任何人都可以提供strnlen的工作定义以在dcraw.c中使用吗?顺便说

c++ - GCC:函数包装器模板问题

我在GCC5.3上尝试让一些函数包装器代码工作,这在clang上运行良好。这是一个简化的例子:#includeusingnamespacestd;templatestructFunctionWrapper;templatestructFunctionWrapper{};staticinttestFunc(int_a,int_b){return_a+_b;}intmain(){FunctionWrapperwrapper;return0;}我在gcc上得到的错误如下:prog.cpp:9:46:error:'Ret(Args...)'isnotavalidtypeforatemplate

C++11 std::this_thread::sleep_until() 在使用 GCC 4.8.5 编译时挂起

考虑以下程序:#include#includeintmain(){std::this_thread::sleep_until(std::chrono::steady_clock::now()-std::chrono::seconds(10));return0;}当用GCC4.8.5编译时,它会挂起。用GCC4.9及以上或clang3.4及以上编译时,立即返回,为什么会挂?据我了解,GCC4.8.5完全支持C++11标准。 最佳答案 这是一个已确认的错误,已在gcc4.9中修复。https://gcc.gnu.org/bugzilla

使用现代编译器编译的 C++ 项目,但链接到过时的 libstdc++

考虑在Centos7虚拟机或容器中构建和交付C++项目的情况。Centos7的默认gcc是4.8。为了让开发人员能够使用现代C++,较新版本的gcc(例如,6.3)被安装到作为CI服务器运行的Centos7中。这提供了-std=c++14支持。[builder@f7279ae9f33fbuild(master%)]$/usr/bin/c++-v2>&1|grepversiongccversion4.8.520150623(RedHat4.8.5-28)(GCC)[builder@f7279ae9f33fbuild(master%)]$/opt/rh/devtoolset-6/root/

c++ - 从子类 : gcc vs msvc 访问 protected 成员

在VisualC++中,我可以这样做:templateclassA{protected:Ti;};templateclassB:publicA{Tgeti(){returni;}};如果我尝试用g++编译它,我会得到一个错误。我必须这样做:templateclassB:publicA{Tgeti(){returnA::i;}};难道我不应该在标准C++中做前者吗?还是gcc配置错误导致出现错误? 最佳答案 这过去是允许的,但在gcc3.4中发生了变化.在模板定义中,非限定名称将不再查找依赖基的成员(如C++标准中的[temp.dep

c++ - 在 Windows 上编译 gcc 4.7

我发现我认为关于如何在Windows上编译gcc的非常好的教程http://www.aristeia.com/Misc/gcc4ForWindows.html#buildinggcc但我坚持(惊讶,惊讶)它的要点,即构建实际的gcc。只是为了让您的生活更轻松,我在这里感到震惊:configuring:#../../source/gcc-4.1.1/configure--prefix=/mingw--host=mingw32--target=mingw32--program-prefix=""--with-as=/mingw/bin/as.exe--with-ld=/mingw/bin/

c++ - gcc -Ofast - 完整的限制列表

我在我的程序中使用-Ofastgcc选项导致延迟要求。我写了一个简单的测试程序:#include#includestaticdoublequiet_NaN=std::numeric_limits::quiet_NaN();intmain(){doublenewValue=130000;doublecurValue=quiet_NaN;printf("newValue=%f\n",newValue);printf("curValue=%f\n",curValue);printf("isnan(newValue)=%d\n",isnan(newValue));printf("isnan(c